#include<stdio.h>
#include"linklist.h"

void pri_int(const void *data1);
int cmp_int(const void *data1, const void *data2);


int main(int argc, char * argv[]){
	list *linklist;
	int num;
	int num2;
	node_t *mynode = NULL; 

	//初始化
	printf("初始化————————————————————————————————————————————\n");
	if(list_init(&linklist, sizeof(int))){
		printf("初始化失败\n");
		return -1;
	}
	//插入
	printf("插入——————————————————————————————————————————————\n");
	for(int i = 0; i < 20; i++){
		if(list_insert_tail(linklist, &i)){
			printf("插入失败\n");
			break;
		}
	}
	//展示
	printf("展示——————————————————————————————————————————————————\n");
	list_display(linklist, pri_int);
	printf("\n");

	//反转
	printf("展示神力————————————————————————————————————————————————\n");
	if(list_reverse(linklist)){
		printf("展示失败，来个wink吧\n");
	}else{
		list_display(linklist, pri_int);
		printf("\n");
	}

	//查找
	printf("查找————————————————————————————————————————\n");
	scanf("%d", &num);
	if((mynode = (node_t *)list_search(linklist, &num, cmp_int)) == NULL){
		printf("查找失败\n");
	}else{
		printf("%p\n", mynode->data);
		printf("飞起来！\n");
		printf("%d\n", *(int *)(mynode->data));
		printf("起飞！\n");
	}
	
	//删除
	printf("删除————————————————————————————————————————————————\n");
	scanf("%d", &num);

	if(list_delete(linklist, &num, cmp_int)){
		printf("删除失败\n");
	}
	list_display(linklist, pri_int);
	printf("\n");
	//修改
	printf("修改————————————————————————————————————————\n");
	scanf("%d %d", &num2,&num);
	if(list_updata(linklist, &num2, &num, cmp_int)){
		printf("修改失败\n");
	}
	list_display(linklist, pri_int);
	printf("\n");
	//销毁
	printf("销毁——————————————————————————————————————————————————\n");
	list_destroy(&linklist);
	
	return 0;
}


void pri_int(const void *data1){
	const int *p = (const int *)data1;
	printf("%d ", *p);
}

int cmp_int(const void *data1, const void *data2){
	const int *d1 = (const int *)data1;
	const int *d2 = (const int *)data2;
	
	return *d1 - *d2;
}
